package br.com.contabilidade.model.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.log4j.Logger;

import br.com.contabilidade.model.bean.Escola;
import br.com.contabilidade.model.bean.Usuario;
import br.com.contabilidade.util.ConnectionFactory;
import br.com.contabilidade.util.Util;

public class EscolaDAO {
	static Logger logger = Logger.getLogger(UsuarioDAO.class);
	
	public List<Escola> listaEscolas() {
		List<Escola> escolas = new ArrayList<Escola>();
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		String sql = "select * from escola ";
		
		try {
			con = ConnectionFactory.getConnection();
			ps = con.prepareStatement(sql);
			rs = ps.executeQuery();
			
			while(rs.next()){
				Escola escola = new Escola();
				escola.setCodEscola(rs.getInt("cod_escola"));
				escola.setNome(rs.getString("nome"));
				escola.setEndereco(rs.getString("endereco"));
				escola.setIdCidade(rs.getInt("id_cidade"));
				escola.setIdEstado(rs.getInt("id_estado"));
				
				escolas.add(escola);
				
				logger.info("Escolas listadas com sucesso !");
			}
			
		} catch (SQLException e) {
			logger.info("Erro em listaEscolas() \n sql :" + e);
		}finally{
			new Util().fechaConexao(con, ps, rs);
		}
		return escolas;
	}
	
	public Escola listaEscola(Escola escola) {
		Escola escola2 = new Escola();
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		String sql = "select * from escola where cod_escola = ?";
		
		try {
			con = ConnectionFactory.getConnection();
			ps = con.prepareStatement(sql);
			ps.setInt(1, escola.getCodEscola());
			rs = ps.executeQuery();
			
			while(rs.next()){
				escola2.setCodEscola(rs.getInt("cod_escola"));
				escola2.setNome(rs.getString("nome"));
				escola2.setEndereco(rs.getString("endereco"));
				escola2.setIdCidade(rs.getInt("id_cidade"));
				escola2.setIdEstado(rs.getInt("id_estado"));
				
				logger.info("Escola "+escola2.getNome()+" listada com sucesso !");
			}
			
		} catch (SQLException e) {
			logger.info("Erro em listaUsuario() \n sql :" + e);
		}finally{
			new Util().fechaConexao(con, ps, rs);
		}
		
		return escola2; 
	}

	public void insereEscola(Usuario usuario) {
		Usuario usuario2= new Usuario();
		Connection con = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		String sql = "insert into usuario (nome, login, senha, id_escola) values (?,?,?,?)";
		
		try {
			con = ConnectionFactory.getConnection();
			ps = con.prepareStatement(sql);
			ps.setString(1, usuario.getNome());
			ps.setString(2, usuario.getLogin());
			ps.setString(3, usuario.getSenha());
			ps.setInt(4, usuario.getIdEscola());
			ps.executeQuery();
			logger.info("Usuario "+usuario.getNome()+" inserido com sucesso !");
			
		} catch (SQLException e) {
			logger.info("Erro em insereUsuario() \n sql :" + e);
		}finally{
			new Util().fechaConexao(con, ps, rs);
		}
		
	}

}
